package com.skzh.flightplans.utils;

import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * TaskStatusManager 用于管理任务的状态
 */
@Component
public class TaskStatusManager {
    /**
     * 使用 ConcurrentHashMap 存储所有任务的状态
     * key: taskId (String)
     * value: TaskStatus (任务状态对象)
     * ConcurrentHashMap 是线程安全的
     * 使用键值对列表存储任务id和状态，可以同时处理多个任务的状态更新和查询，实现并发访问。
     * 在前端点击，确定，后端开始处理task1，这时候还可以在上传task2并处理，所以必须有taskid标记每个任务的状态，防止任务状态不会互相干扰
     */
    private final Map<String, TaskStatus> taskStatusMap = new ConcurrentHashMap<>();

    // 更新任务状态
    public void updateTaskStatus(String taskId, TaskStatus status) {
        taskStatusMap.put(taskId, status);
    }

    // 获取任务状态
    public TaskStatus getTaskStatus(String taskId) {
        return taskStatusMap.get(taskId);
    }

    // 移除任务
    public void removeTask(String taskId) {
        taskStatusMap.remove(taskId);
    }
} 